package com.jilefojing.service;

import java.util.List;

import com.jilefojing.beans.enums.ItemTypeEnumForSource;
import com.jilefojing.beans.exception.UserContextException;
import com.jilefojing.beans.pojos.Comment;
import com.jilefojing.beans.pojos.enhanced.EnhancedComment;
import com.jilefojing.beans.query.CommentQuery;
import com.jilefojing.beans.vo.Pagination;
import com.jilefojing.context.beans.vo.UserContext;
import com.jilefojing.service.base.IBaseService;

/**
 * 
 * @author 作者 jgshun
 * @date 创建时间 2016年07月21日 15时40分56秒
 */
public interface ICommentService extends IBaseService<Comment> {

	Pagination<EnhancedComment> getPaginationForHot(ItemTypeEnumForSource itemType, long itemId, Pagination<EnhancedComment> pagination, UserContext userContext);

	Pagination<EnhancedComment> getPaginationForActive(ItemTypeEnumForSource itemType, long itemId, Pagination<EnhancedComment> pagination, UserContext userContext);

	Pagination<EnhancedComment> getPagination(CommentQuery commentQuery, Pagination<EnhancedComment> pagination, UserContext userContext);

	List<EnhancedComment> conventComments2EnhancedComments(List<Comment> comments);

	EnhancedComment appendEnhancedUser2EnhancedComment(EnhancedComment enhancedComment, UserContext userContext);

	List<EnhancedComment> appendEnhancedUser2EnhancedComments(List<EnhancedComment> enhancedComments, UserContext userContext);

	EnhancedComment appendEnhancedItem2EnhancedComment(EnhancedComment enhancedComment, UserContext userContext);

	List<EnhancedComment> appendEnhancedItem2EnhancedComments(List<EnhancedComment> enhancedComments, UserContext userContext);

	EnhancedComment appendEnhancedTopItem2EnhancedComment(EnhancedComment enhancedComment, UserContext userContext);

	List<EnhancedComment> appendEnhancedTopItem2EnhancedComments(List<EnhancedComment> enhancedComments, UserContext userContext);

	EnhancedComment getEnhancedComment(long id, UserContext userContext);

	List<EnhancedComment> getEnhancedComments(List<Long> ids, UserContext userContext);

	EnhancedComment appendEnhancedStatistics2EnhancedComment(EnhancedComment enhancedComment, UserContext userContext);

	List<EnhancedComment> appendEnhancedStatistics2EnhancedComments(List<EnhancedComment> enhancedComments, UserContext userContext);

	EnhancedComment appendEnhancedChildCommentsForTop2EnhancedTopComment(EnhancedComment enhancedComment, UserContext userContext);

	List<EnhancedComment> appendEnhancedChildCommentsForTop2EnhancedTopComments(List<EnhancedComment> enhancedComments, UserContext userContext);

	EnhancedComment appendCountChildCommentForTop2EnhancedTopComment(EnhancedComment enhancedComment, UserContext userContext);

	List<EnhancedComment> appendCountChildCommentForTop2EnhancedTopComments(List<EnhancedComment> enhancedComments, UserContext userContext);

	EnhancedComment appendEnhancedAttitude2EnhancedCommentForUser(EnhancedComment enhancedComment, UserContext userContext);

	List<EnhancedComment> appendEnhancedAttitude2EnhancedCommentsForUser(List<EnhancedComment> enhancedComments, UserContext userContext);

	List<EnhancedComment> getEnhancedDialogCommentsForTop(long id, UserContext userContext);

	Comment add(Comment comment, UserContext userContext) throws UserContextException;

	void cancle(Comment comment, UserContext userContext) throws UserContextException;
}
